Skip to content

Utils

汎用のテーブル操作と検証のためのユーティリティライブラリです。カリー形式と従来のプログラミングの両方をサポートしています。

Note: 次の関数に提供される入力が期待されるタイプと一致していることを確認することが重要です。

Example usage

lua
local utils = require(".utils")

local totalSupply = utils.reduce(
  function (acc, v) return acc + v end,
  0,
  { 2, 4, 9 }
)

print(totalSupply) -- prints 15

Module functions

concat()

この関数は配列 b を配列 a に連結します。

  • Parameters:
    • a: {table} 基本配列
    • b: {table} 基本配列に連結する配列
  • Returns: ab の統合された配列

Examples

lua
-- returns { 1, 2, 3, 4, 5, 6 }
concat({ 1, 2, 3 })({ 4, 5, 6 })

-- returns { "hello", "world", "and", "you" }
concat({ "hello", "world" }, { "and", "you" })

reduce()

この関数は、すべての配列要素に対して提供されたリデューサ関数を実行し、最終的に1つの(統合された)結果を提供します。

  • Parameters:
    • fn: {function} リデューサ関数。前の結果、現在の要素の値、およびキーをこの順序で受け取ります。
    • initial: {any} オプションの初期値
    • t: {table} 簡略化する配列
  • Returns: すべてのテーブル要素に対してリデューサを実行した結果としての単一の結果

Examples

lua
local sum = utils.reduce(
  function (acc, v) return acc + v end,
  0,
  { 1, 2, 3 }
)

print(sum) -- prints 6
lua
local sum = utils
  .reduce(function (acc, v) return acc + v end)(0)({ 5, 4, 3 })

print(sum) -- prints 12

map()

この関数は、提供された配列内の各要素に対して提供されたマップ関数を呼び出した結果で満たされた新しい配列を作成します。

  • Parameters:
    • fn: {function} マップ関数。現在の配列要素とキーを受け取ります。
    • data: {table} マッピングする配列
  • Returns: マップ関数の結果で構成された新しい配列

Examples

lua
-- returns { "Odd", "Even", "Odd" }
utils.map(
  function (val, key)
    return (val % 2 == 0 and "Even") or "Odd"
  end,
  { 3, 4, 7 }
)
lua
-- returns { 4, 8, 12 }
utils.map(function (val, key) return val * 2 end)({ 2, 4, 6 })

filter()

この関数は、元の配列の一部から新しい配列を作成し、提供されたフィルタ関数のテストに合格した要素のみを保持します。

  • Parameters:
    • fn: {function} フィルタ関数。現在の配列要素を受け取り、要素を保持するか(true)フィルタリングするか(false)を決定するためにブール値を返す必要があります。
    • data: {table} フィルタリングする配列
  • Returns: 新しいフィルタリングされた配列

Examples

lua
-- keeps even numbers
utils.filter(
  function (val) return val % 2 == 0 end,
  { 3, 4, 7 }
)
lua
-- keeps only numbers
utils.filter(
  function (val) return type(val) == "number" end,
  { "hello", "world", 13, 44 }
)

find()

この関数は、提供された関数で一致する最初の要素を返します。

  • Parameters:
    • fn: {function} 現在の要素を受け取り、一致する場合はtrue、一致しない場合はfalseを返すfind関数。
    • t: {table} 要素を検索する配列
  • Returns: 見つかった要素、または一致する要素がない場合はnil

Examples

lua
local users = {
  { name = "John", age = 50 },
  { name = "Victor", age = 37 },
  { name = "Maria", age = 33 }
}

-- returns the user "John"
utils.find(
  function (val) return user.name == "John" end,
  users
)
lua
-- returns the user "Maria"
utils.find(function (val) return user.age == 33 end)(users)

reverse()

配列を逆順に変換します。

  • Parameters:
    • data: {table} 逆順にする配列
  • Returns: 元の配列を逆順にしたもの

Example

lua
-- is: { 3, 2, 1 }
utils.reverse({ 1, 2, 3 })

includes()

配列に値が含まれているかどうかを判定します。

  • Parameters:
    • val: {any} 確認する要素
    • t: {table} 確認する配列
  • Returns: 提供された値が配列に含まれているかどうかを示すブール値

Examples

lua
-- this is true
utils.includes("John", { "Victor", "John", "Maria" })
lua
-- this is false
utils.includes(4)({ 3, 5, 7 })

keys()

テーブルのキーを返します。

  • Parameters:
    • table: {table} キーを取得するテーブル
  • Returns: キーの配列

Example

lua
-- returns { "hello", "name" }
utils.keys({ hello = "world", name = "John" })

values()

テーブルの値を返します。

  • Parameters:
    • table: {table} 値を取得するテーブル
  • Returns: 値の配列

Example

lua
-- returns { "world", "John" }
utils.values({ hello = "world", name = "John" })

propEq()

テーブルの指定されたプロパティが提供された値と等しいかどうかをチェックします。

  • Parameters:
    • propName: {string} 比較するプロパティの名前
    • value: {any} 比較する値
    • object: {table} プロパティを選択するオブジェクト
  • Returns: 提供された値とプロパティの値が等しいかどうかを示すブール値

Examples

lua
local user = { name = "John", age = 50 }

-- returns true
utils.propEq("age", 50, user)
lua
local user = { name = "Maria", age = 33 }

-- returns false
utils.propEq("age", 45, user)

prop()

指定されたプロパティ名に属するプロパティの値をオブジェクトから返します。

  • Parameters:
    • propName: {string} 取得するプロパティの名前
    • object: {table} プロパティ値を選択するオブジェクト
  • Returns: プロパティの値、または見つからなかった場合は nil

Examples

lua
local user = { name = "Maria", age = 33 }

-- returns "Maria"
utils.prop("name", user)
lua
local user = { name = "John", age = 50 }

-- returns 50
utils.prop("age")(user)

compose()

この関数は、複数の配列の変異を連鎖させ、提供された配列に対して逆の順序で実行することを可能にします。

  • Parameters:
    • ...: {function[]} 配列の変異
    • v: {table} 提供された関数を実行するオブジェクト
  • Returns: 提供された変異からの結果

Examples

lua
-- returns 12
utils.compose(
  utils.reduce(function (acc, val) return acc + val end, 0),
  utils.map(function (val) return val * 2 end)
)({ 1, 2, 3 })